文章目录
  1. 1. Swfit 制作Framework
    1. 1.1. iOS Framework简介
    2. 1.2. Framework制作过程
    3. 1.3. 添加到所用项目中所遇到的问题

Swfit 制作Framework

iOS Framework简介

Framework是Cocoa/Cocoa Touch程序中使用的一种资源打包方式,可以将代码文件、头文件、资源文件、说明文档等集中在一起,方便开发者使用。一般如果是静态Framework的话,资源打包进Framework是读取不了的。静态Framework和.a文件都是编译进可执行文件里面的。只有动态Framework能在.app下面的Framework文件夹下看到,并读取.framework里的资源文件

  • Framework类型
1
2
3
Mach-o Type(Build Settings)
Dynamic library//因为本篇文章介绍的是以Swift为基础制作Framework(Swift仅支持动态包)
Static library

Framework制作过程

  • 新建工程

创建工程.png

  • 导入所需要的库文件

Snip20180125_11.png

1
2
此处导入OC文件时不需要建立桥接文件,系统会自动为我们创建
供外部使用的Swift类文件以及相关属性和方法等需要用Public修饰。
  • 利用cocoapods导入所需第三方库

cocoapods.png

1
2
添加方法与之前项目相同use_frameworks!来告诉pod 生成动态库文件Framework类型
此处需要注意利用打包Framework之时加入的第三方库,需要通知使用者在项目中也添加,并非已经嵌入了Framework中,此时所做相当于把第三方库链接进了Framework,仍需添加此Framework的项目添加其所用到的第三方库,并且版本需要保持一致

Snip20180125_6.png

1.对外公布的头文件
2.Sources文件
3.cocoadpos
4.command + B编译后生成的Framework(当前真机或模拟器就对应,可将真机与模拟器的Framework合并,可自行百度)

Snip20180125_10.png

1
对应打包后自动生成Giant-swift的桥接文件

添加到所用项目中所遇到的问题

Snip20180125_14.png

Snip20180125_17.png

1
2
3
此处需要导入General-> Embedded Binaries Giant.framework
对于之前提到的项目也需要导入cocopods的第三方库Xcode 9.2较为友好的提示了,但是在Xcode 9.0 并无提示
由于家中电脑Xcode版本与公司不一致,此处不再重现截图

Snip20180125_15.png

1
制作Framework编译通过,但是在调用结构体的时候报错,是因为创建结构体的时候初始化方法未public 权限有问题,按如下修改,编译即可通过

Snip20180125_9.png
Snip20180125_12.png

1
2
3
Framework中读取自身文件的路径
Bundle.init(for: ViewController.self).resourcePath
拼接"/文件名.png"即可
1
[问题参考](https://www.jianshu.com/p/457c941eae5e)
文章目录
  1. 1. Swfit 制作Framework
    1. 1.1. iOS Framework简介
    2. 1.2. Framework制作过程
    3. 1.3. 添加到所用项目中所遇到的问题